import java.util.*;

public class Test {
    public static void main(String[] args) {
        Set<String> set = new TreeSet<>();
        set.add("abcd");
        set.add("world");
        set.add("hello");

        Iterator<String> it = set.iterator();
        while (it.hasNext()) {
            System.out.print(it.next() + " ");
        }
        System.out.println();
//        //检查 Set 中是否有 这个 key 值
//        System.out.println(set.contains("world"));
//        //删除 Set 中的 o 这个值
//        System.out.println(set.remove("hello"));
    }
    public static void main2(String[] args) {
        Map<String,Integer> map = new TreeMap<>();
        map.put("abcd",3);
        map.put("world",4);
        map.put("hello",2);
        map.put("hello",30);
//        int value = map.get("world");//这里的 value 是 Integer，所以会自动进行拆箱操作
//        //int value2 = map.get("world2");
//        //对null 进行拆箱会出现空指异常，所以我们要用 Integer 来接收，就不会出现异常
//        Integer value2 = map.get("world2");
//        System.out.println(value);
//        System.out.println(value2);

//        Integer value = map.getOrDefault("world2",10);
//        //key如果有value就返回这个值，如果没有就返回我们的后面设置的value 值
//        System.out.println(value);
//
//        //删除key的映射关系
//        map.remove("world");
//
//        System.out.println(map.containsKey("hello"));
//        System.out.println(map.containsValue(12));
//
//        Set<String> set = map.keySet();
//        Collection<Integer> collection = map.values();

        //Map不能使用迭代器遍历，但是可以通过这个方法使用Set 来返回迭代器遍历，相当于间接遍历了 Map
        Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
        Iterator<Map.Entry<String,Integer>> it = entrySet.iterator();
        while(it.hasNext()) {
            System.out.print(it.next() + " ");
        }
        System.out.println();
        for (Map.Entry<String,Integer> entry : entrySet) {
            System.out.println("key: " + entry.getKey() + "-> value: " + entry.getValue());
        }
    }

    public static void main1(String[] args) {
        BinarySearchTree binarySearchTree = new BinarySearchTree();
        binarySearchTree.insert(4);
        binarySearchTree.insert(1);
        binarySearchTree.insert(2);
        binarySearchTree.insert(3);
        binarySearchTree.insert(5);

        BinarySearchTree.TreeNode ret = binarySearchTree.search(5);
        System.out.println(ret.val);
    }
}
